    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * AreaListar.java
 *
 * Created on 07/05/2011, 11:01:09 AM
 */
package org.gingresos.contabilidad;

import java.io.InputStream;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.DateFormat;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

import javax.swing.table.DefaultTableModel;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
import org.gingresos.clases.reportes.MyInformeDiario;
import org.gingresos.start.MySesion;
import org.jdesktop.swingx.JXTipOfTheDay;
import org.jdesktop.swingx.tips.DefaultTip;
import org.jdesktop.swingx.tips.DefaultTipOfTheDayModel;
import org.jdesktop.swingx.tips.TipOfTheDayModel;
import org.sirmupadbapi.beans.*;
import org.sirmupadbapi.controller.*;
import org.sirmupadbapi.generales.Mensajeria;

/**
 *
 * @author avbravo
 */
public class ContabilidadInformeDiario extends javax.swing.JInternalFrame {

    DefaultTableModel modelo;
    int fila = -1;
    Bicicles bicicletas1 = new Bicicles();
    BiciclesController bicicletasController1 = new BiciclesController();
    Codigosrecargo codigosrecargo1 = new Codigosrecargo();
    CodigosrecargoController codigosrecargoController1 = new CodigosrecargoController();
    Comercios comercios1 = new Comercios();
    ComerciosController comerciosController1 = new ComerciosController();
    Contribuyentes contribuyentes1 = new Contribuyentes();
    ContribuyentesController contribuyentesController1 = new ContribuyentesController();
    Corregimients corregimientos1 = new Corregimients();
    CorregimientsController corregimientosController1 = new CorregimientsController();
    Recibes recibos1 = new Recibes();
    RecibesController recibosController1 = new RecibesController();
    Recibesdetalles recibosDetalles1 = new Recibesdetalles();
    RecibesdetallesController recibosdetallesController1 = new RecibesdetallesController();
    Regimen regimen1 = new Regimen();
    RegimenController regimenController1 = new RegimenController();
    Remolques remolques1 = new Remolques();
    RemolquesController remolquesController1 = new RemolquesController();
    Remolquestraspaso remolquestraspaso1 = new Remolquestraspaso();
    RemolquestraspasoController remolquestraspasoController1 = new RemolquestraspasoController();
    MyInformeDiario myInformeDiario1 = new MyInformeDiario();
    Usuarios usuarios1 = new Usuarios();
    UsuariosController usuariosController1 = new UsuariosController();
    Vehicles vehiculos1 = new Vehicles();
    VehiclesController vehiculosController1 = new VehiclesController();
    VehiclestraspasoController vehiclestraspasoController1 = new VehiclestraspasoController();
    Vehiclestraspaso vehiclestraspaso1 = new Vehiclestraspaso();
    List<MyInformeDiario> listMyInformeDiario = new ArrayList<MyInformeDiario>();
    JXTipOfTheDay tipOfTheDay = new JXTipOfTheDay(loadModel());
    Object[] filas = new Object[2]; // Hay tres columnas en la tabla
    int contador;
    int x;
    int numeroregistros;
    String sql;
    PreparedStatement psquery;
    ResultSet rs;
    String nombre;
    Double granTotal = 0.0;
    Double totalRecargo = 0.0;
    Double totalSinRecargo = 0.0;
    Integer totalRecibos = 0;
    Integer totalAnulados = 0;
    String idrecargo;

    private static TipOfTheDayModel loadModel() {
        List tips = Arrays.asList(new DefaultTip("Tip 1", "Este proceso genera los informes diarios"),
                new DefaultTip("Tip 2", "Este proceso consume mucho tiempo dependiendo de los recibos generados."));
        DefaultTipOfTheDayModel model = new DefaultTipOfTheDayModel(tips);
        return model;
    }
    JLabel statusLabel = new JLabel();

    /**
     * Creates new form AreaListar
     */
    public ContabilidadInformeDiario() {
        initComponents();
        java.util.Calendar ca = java.util.Calendar.getInstance();
        java.sql.Date mydate = new java.sql.Date(ca.getTimeInMillis());
        jXDatePickerFechaInicio.setDate(mydate);
        jXDatePickerFechaInicio.setFormats(new SimpleDateFormat("dd/MM/yyyy"));
        jXDatePickerFechaTerminacion.setDate(mydate);
        jXDatePickerFechaTerminacion.setFormats(new SimpleDateFormat("dd/MM/yyyy"));
        jXStatusBar1.add(statusLabel);
        modelo = (DefaultTableModel) jTable.getModel();

        sql = "idmunicipio='" + MySesion.getIdmunicipio() + "' and activo='si'";
        idrecargo = "";
        if (codigosrecargoController1.query(sql)) {
            for (Codigosrecargo codigosrecargo : codigosrecargoController1.getCodigosrecargolist()) {
                idrecargo = codigosrecargo.getIDREGIMENRECARGO();
            }
        }

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jXStatusBar1 = new org.jdesktop.swingx.JXStatusBar();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable = new javax.swing.JTable();
        jPanel2 = new javax.swing.JPanel();
        jXDatePickerFechaInicio = new org.jdesktop.swingx.JXDatePicker();
        jXDatePickerFechaTerminacion = new org.jdesktop.swingx.JXDatePicker();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jCheckBoxFiltro = new javax.swing.JCheckBox();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTextArea = new javax.swing.JTextArea();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jTextFieldTotalRecaudado = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        jTextFieldTotalRecargo = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        jTextFieldTotalRecibos = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        jTextFieldTotalAnulados = new javax.swing.JTextField();
        jLabel8 = new javax.swing.JLabel();
        jTextFieldTotalSinRecargo = new javax.swing.JTextField();
        jToolBar1 = new javax.swing.JToolBar();
        jButtonCargarRegistros = new javax.swing.JButton();
        jButtonImprimir = new javax.swing.JButton();
        jButtonAyuda = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();

        setClosable(true);
        setIconifiable(true);
        setMaximizable(true);
        setResizable(true);
        setTitle("Informe Diario");

        jTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Fecha", "Contribuyente", "Recibo", "Pago", "Codigo", "Recargo", "Anulado"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Boolean.class, java.lang.Boolean.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTable);

        jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabel1.setText("Fecha inicio");

        jLabel2.setText("Fecha fin");

        jCheckBoxFiltro.setFont(new java.awt.Font("Ubuntu", 1, 15)); // NOI18N
        jCheckBoxFiltro.setForeground(new java.awt.Color(239, 34, 52));
        jCheckBoxFiltro.setText("Filtro Por Caja");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(jLabel2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jXDatePickerFechaInicio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jXDatePickerFechaTerminacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(148, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jCheckBoxFiltro, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jXDatePickerFechaInicio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addGap(10, 10, 10)
                .addComponent(jCheckBoxFiltro)
                .addGap(2, 2, 2)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jXDatePickerFechaTerminacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addContainerGap(20, Short.MAX_VALUE))
        );

        jTextArea.setColumns(20);
        jTextArea.setRows(5);
        jScrollPane2.setViewportView(jTextArea);

        jLabel3.setText("Mensajes");

        jLabel4.setText("Total Recaudado");

        jTextFieldTotalRecaudado.setEditable(false);

        jLabel5.setText("Total Recargo");

        jTextFieldTotalRecargo.setEditable(false);

        jLabel6.setText("Total Recibos");

        jTextFieldTotalRecibos.setEditable(false);

        jLabel7.setText("Total Anulados");

        jTextFieldTotalAnulados.setEditable(false);

        jLabel8.setText("Total Sin Recargo");

        jTextFieldTotalSinRecargo.setEditable(false);

        jToolBar1.setRollover(true);

        jButtonCargarRegistros.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/gingresos/resources/gif/procesar.png"))); // NOI18N
        jButtonCargarRegistros.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonCargarRegistrosActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonCargarRegistros);

        jButtonImprimir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/gingresos/resources/gif/print.png"))); // NOI18N
        jButtonImprimir.setEnabled(false);
        jButtonImprimir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonImprimirActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonImprimir);

        jButtonAyuda.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/gingresos/resources/gif/help_icon.gif"))); // NOI18N
        jButtonAyuda.setToolTipText("Ayuda");
        jButtonAyuda.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAyudaActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonAyuda);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/gingresos/resources/gif/return.png"))); // NOI18N
        jButton1.setToolTipText("Cerrar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jToolBar1.add(jButton1);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 561, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(12, 12, 12)
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 397, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(jLabel3)
                                    .addGroup(jPanel1Layout.createSequentialGroup()
                                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addGroup(jPanel1Layout.createSequentialGroup()
                                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                    .addComponent(jLabel4)
                                                    .addComponent(jLabel6))
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                    .addComponent(jTextFieldTotalRecibos)
                                                    .addComponent(jTextFieldTotalRecaudado, javax.swing.GroupLayout.PREFERRED_SIZE, 155, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                            .addGroup(jPanel1Layout.createSequentialGroup()
                                                .addComponent(jLabel8)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(jTextFieldTotalSinRecargo, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                        .addGap(28, 28, 28)
                                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                            .addGroup(jPanel1Layout.createSequentialGroup()
                                                .addGap(8, 8, 8)
                                                .addComponent(jLabel5)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(jTextFieldTotalRecargo, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE))
                                            .addGroup(jPanel1Layout.createSequentialGroup()
                                                .addGap(4, 4, 4)
                                                .addComponent(jLabel7)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(jTextFieldTotalAnulados))))))))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addContainerGap()
                                .addComponent(jXStatusBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 432, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(60, 60, 60)
                                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addGap(44, 44, 44))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(120, 120, 120)
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 143, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(15, 15, 15)
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 207, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(jTextFieldTotalRecaudado, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel8)
                    .addComponent(jTextFieldTotalSinRecargo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel5)
                    .addComponent(jTextFieldTotalRecargo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jTextFieldTotalRecibos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel7)
                        .addComponent(jTextFieldTotalAnulados, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel6))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(57, 57, 57)
                        .addComponent(jLabel3)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jXStatusBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(78, 78, 78))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
    dispose();
}//GEN-LAST:event_jButton1ActionPerformed

    private void jButtonCargarRegistrosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCargarRegistrosActionPerformed
        Thread queryThread = new Thread() {
            public void run() {
                runQueries();
            }
        };
        queryThread.start();

    }//GEN-LAST:event_jButtonCargarRegistrosActionPerformed

    private void jButtonAyudaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAyudaActionPerformed
        tipOfTheDay.showDialog(this);
    }//GEN-LAST:event_jButtonAyudaActionPerformed

    private void jButtonImprimirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonImprimirActionPerformed
        try {

            HashMap map = new HashMap();
//            map.put("p_entidad", SesionLocal.getEntidad());

            Imprimir(listMyInformeDiario, map);

        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "Imprimir()");
        }
    }//GEN-LAST:event_jButtonImprimirActionPerformed
    /**
     * @param args the command line arguments
     */
//    public static void main(String args[]) {
//        java.awt.EventQueue.invokeLater(new Runnable() {
//
//            public void run() {
//                try {
//                    new AreaCrear().setVisible(true);
//                } catch (ParseException ex) {
//                    Logger.getLogger(AreaCrear.class.getName()).log(Level.SEVERE, null, ex);
//                }
//            }
//        });
//    }
    private void runQueries() {
        try {
            if (modelo != null) {
                while (modelo != null && modelo.getRowCount() > 0) {
                    modelo.removeRow(0);
                }
            }



            ProcesarRecibos();

            updateProgress("proceso de generacion terminado");
            Calendar calendario2 = Calendar.getInstance();
            int horaf = calendario2.get(Calendar.HOUR_OF_DAY);
            int minutosf = calendario2.get(Calendar.MINUTE);
            int segundosf = calendario2.get(Calendar.SECOND);

            //jButtonCargarRegistros.setEnabled(false);


        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "runQueries()");
        }

    }

    private void updateProgress(final String texto) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // Here, we can safely update the GUI
                // because we'll be called from the
                // event dispatch thread
//                 statusLabel.setText( texto+ " : " + queryNo);
                statusLabel.setText(texto);
            }
        });
    }

    private void ProcesarRecibos() {
        try {
            listMyInformeDiario.removeAll(listMyInformeDiario);
            jButtonImprimir.setEnabled(false);
            granTotal = 0.0;
            totalAnulados = 0;
            totalSinRecargo = 0.0;
            totalRecargo = 0.0;
            totalRecibos = 0;
            jTextFieldTotalRecaudado.setText("");
            jTextFieldTotalRecargo.setText("");
            jTextFieldTotalSinRecargo.setText("");
            jTextFieldTotalRecibos.setText("");
            jTextFieldTotalAnulados.setText("");
            java.util.Date FechaDate = jXDatePickerFechaInicio.getDate();
            java.sql.Date FechaInicio = new java.sql.Date(FechaDate.getTime());
            if (FechaInicio == null) {
                Mensajeria.Mensaje("Indique la fecha de inicio");
                jXDatePickerFechaInicio.requestFocus();
                return;
            }
            FechaDate = jXDatePickerFechaTerminacion.getDate();
            java.sql.Date FechaTerminacion = new java.sql.Date(FechaDate.getTime());
            if (FechaTerminacion == null) {
                Mensajeria.Mensaje("Indique la fecha de fin");
                jXDatePickerFechaTerminacion.requestFocus();
                return;
            }
            if (this.jCheckBoxFiltro.isSelected()==true){
             sql = "fecha>= '" + FechaInicio + "' and fecha<='" + FechaTerminacion + "' and idmunicipio='" + MySesion.getIdmunicipio() + "' and idusuario='"+ MySesion.getUsername() +"' "; 
            }else{
             sql = "fecha>= '" + FechaInicio + "' and fecha<='" + FechaTerminacion + "' and idmunicipio='" + MySesion.getIdmunicipio() + "' "; 
            }
            
            //String sql = "fecha>= '" + FechaInicio + "' and fecha<='" + FechaTerminacion + "' and idmunicipio='" + MySesion.getIdmunicipio() + "' "; 
            if (recibosController1.query(sql)) {

                Format formatter;
                formatter = new SimpleDateFormat("dd/MM/yyyy");
                contador = 0;
                for (Recibes recibes : recibosController1.getRecibeslist()) {
                    totalRecibos++;
                    updateProgress("procesando  " + contador++ + " de " + recibosController1.getRecibeslist().size());
                    recibos1 = recibes;
                    if (recibos1.getTipoid().equals("comercios")) {
                        comercios1.setIDCOMERCIO(recibos1.getId());
                        comercios1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                        CargarComercios();

                    } else {
                        if (recibos1.getTipoid().equals("contribuyentes")) {
                            contribuyentes1.setCEDULA(recibos1.getId());
                            contribuyentes1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                            CargarContribuyentes();


                        } else {
                            /*
                             * bicicletas
                             */
                            if (recibos1.getTipoid().equals("bicicletas")) {
                                CargarBicicletas();


                            } else {
                                /*
                                 * remolques
                                 */
                                if (recibos1.getTipoid().equals("remolques")) {
                                    CargarRemolques();

                                } else {
                                    if (recibos1.getTipoid().equals("vehiculos")) {

                                        CargarVehiculos();

                                    }
                                }
                            }

                        }


                    }

                    //---
                    sql = "idrecibo= '" + recibos1.getIdrecibo() + "' and idmunicipio='" + MySesion.getIdmunicipio() + "'";
                    if (recibos1.getAnulado().equals("no")) {

                        if (recibosdetallesController1.query(sql)) {
                            Object[] fila = new Object[7]; // Hay tres columnas en la tabla
                            Double pagoRedondeado = 0.0;
                            Boolean lrec = false;
                            String cod = "";
                            for (Recibesdetalles recibosdetalles : recibosdetallesController1.getRecibesdetalleslist()) {
                                lrec = false;
                                cod = recibosdetalles.getIdregimen();
                                if (recibosdetalles.getEsrecargo().equals("si") || recibosdetalles.getIdregimen().equals(idrecargo)) {
                                    lrec = true;
                                    if (!idrecargo.equals("")) {
                                        cod = idrecargo;
                                    }
                                }
                                if (!existeEnJTable(recibes.getIdrecibo(), lrec,cod)) {


                                    granTotal = MySesion.Redondeo(granTotal) + MySesion.Redondeo(recibosdetalles.getPago());
                                    granTotal = MySesion.Redondeo(granTotal);

                                    Date fecha = recibes.getFecha();
                                    String MyFecha = formatter.format(fecha);
                                    fila[0] = MyFecha;
                                    fila[1] = nombre;//rs.getString("propietario");
                                    fila[2] = recibes.getIdrecibo();

                                    fila[3] = MySesion.Redondeo(recibosdetalles.getPago());
                                    pagoRedondeado = MySesion.Redondeo(recibosdetalles.getPago());

                                    fila[4] = recibosdetalles.getIdregimen();
                                    if (recibosdetalles.getEsrecargo().equals("si") || recibosdetalles.getIdregimen().equals(idrecargo)) {
                                        fila[5] = new Boolean(true);
                                        totalRecargo += recibosdetalles.getPago();
                                        if (!idrecargo.equals("")) {
                                            fila[4] = idrecargo;
                                        }
                                    } else {
                                        totalSinRecargo += recibosdetalles.getPago();
                                        fila[5] = new Boolean(false);
                                    }


                                    if (recibos1.getAnulado().equals("no")) {
                                        fila[6] = new Boolean(false);
                                    } else {
                                        fila[6] = new Boolean(true);
                                    }
                                    modelo.addRow(fila);
//                                listMyInformeDiario.add(new MyInformeDiario(MyFecha, nombre, recibes.getIdrecibo(), recibosdetalles.getPago(), recibosdetalles.getIdregimen()));
                                    listMyInformeDiario.add(new MyInformeDiario(MyFecha, nombre, recibes.getIdrecibo(), pagoRedondeado, fila[4].toString()));
                                }
                            }//for

                        } else {
                            jTextArea.append("\nNo existen detalles del recibo " + recibos1.getIdrecibo());

                        }
                    } else {
                        totalAnulados++;
                        Date fecha = recibos1.getFecha();
                        String MyFecha = formatter.format(fecha);
                        Object[] fila = new Object[7];
                        fila[0] = MyFecha;
                        fila[1] = nombre;//rs.getString("propietario");
                        fila[2] = recibes.getIdrecibo();
                        fila[3] = 0.0;
                        fila[4] = "ANULADO";
                        fila[5] = new Boolean(false);
                        fila[6] = new Boolean(true);
                        modelo.addRow(fila);
                        listMyInformeDiario.add(new MyInformeDiario(MyFecha, nombre, recibes.getIdrecibo(), 0.0, "ANULADO"));
                    }
                }
            } else {
                jTextArea.append("\nNo existen recibos en esa fecha");
                Mensajeria.Mensaje("No existen recibos en esa fecha");
            }

            jTextFieldTotalRecaudado.setText(MySesion.Redondeo(granTotal).toString());
            jTextFieldTotalRecargo.setText(MySesion.Redondeo(totalRecargo).toString());
            jTextFieldTotalSinRecargo.setText(MySesion.Redondeo(totalSinRecargo).toString());
            jTextFieldTotalRecibos.setText(String.valueOf(totalRecibos));
            jTextFieldTotalAnulados.setText(String.valueOf(totalAnulados));

            jButtonImprimir.setEnabled(true);
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "ProcesarRecibos()");
        }
    }

    private Boolean existeEnJTable(Integer idrecibo, Boolean rec,String cod) {
        try {
           Integer idr;
           Boolean r;
           String c;
           
            if(modelo.getRowCount() ==0){
                return false;
            }
            for (int i = 0; i <= modelo.getRowCount()-1; i++) {
              
                idr =Integer.parseInt(modelo.getValueAt(i,2).toString());
              
                r= (modelo.getValueAt(i,5).toString().equals("true")?true:false);
                c =modelo.getValueAt(i,4).toString();
               
                if(idr == idrecibo && r.equals(rec) && c.equals(cod) ){
                    return true;
                }
            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "existeEnJTable()()");
        }
        return false;

    }

    private void CargarComercios() {
        try {
            Comercios comercios = comerciosController1.findByPrimaryKey(comercios1);
            if (comercios == null) {
                jTextArea.append("\nNo existe un comercio con ese codigo: " + comercios1.getIDCOMERCIO());
                //Mensajeria.Mensaje("No existe un comercio con ese codigo: " + comercios1.getIdcomercio());
                return;
            }
            comercios1 = comercios;
            nombre = comercios1.getCOMERCIO();
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "CargarComercios()");
        }
    }

    private void CargarContribuyentes() {
        try {
            Contribuyentes contribuyentes = contribuyentesController1.findByPrimaryKey(contribuyentes1);
            if (contribuyentes == null) {
                jTextArea.append("\nNo existe un contribuyente con esa cedula: " + contribuyentes1.getCEDULA());
                //Mensajeria.Mensaje("No existe un contribuyente con esa cedula: " + contribuyentes1.getCedula());
                return;
            }
            contribuyentes1 = contribuyentes;
            nombre = contribuyentes1.getCONTRIBUYENTE();

        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "CargarContribuyentes()");
        }
    }

    private void CargarBicicletas() {
        try {

            bicicletas1.setIDBICICLETA(Long.parseLong(recibos1.getId()));
            bicicletas1.setIDMUNICIPIO(MySesion.getIdmunicipio());
            Bicicles bicicletas = bicicletasController1.findByPrimaryKey(bicicletas1);
            if (bicicletas == null) {
                jTextArea.append("\nNo existe una bicicleta con el codigo " + bicicletas1.getID());
                // Mensajeria.Mensaje("No existe una bicicleta con el codigo " + bicicletas1.getId());
                return;
            }
            bicicletas1 = bicicletas;

            //Encontrar el dueño
            if (bicicletas1.getTIPOID().equals("contribuyentes")) {
                contribuyentes1.setCEDULA(bicicletas1.getID());
                contribuyentes1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                CargarContribuyentes();
            } else {
                if (bicicletas1.getTIPOID().equals("comercios")) {
                    comercios1.setIDCOMERCIO(bicicletas1.getID());
                    comercios1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                    CargarComercios();
                }
            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "CargarBicicletas()");
        }

    }

    private void CargarRemolques() {
        try {
            if (recibos1.getTiporecibo().equals("vehiculostraspaso")) {
                String sql = "idremolque='" + recibos1.getId() + "' and idrecibo='" + recibos1.getIdrecibo() + "'";
                if (remolquestraspasoController1.query(sql)) {
                    Remolquestraspaso remolquestraspaso = remolquestraspasoController1.getRemolquestraspasolist().get(0);
                    if (remolquestraspaso != null) {
//                        vehiculos1.setIDVEHICULO(Long.parseLong(vehiclestraspaso.getID()));
                        if (remolquestraspaso.getTIPOID().equals("contribuyentes")) {
                            contribuyentes1.setCEDULA(remolquestraspaso.getID());
                            contribuyentes1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                            CargarContribuyentes();
                            return;
                        } else {
                            if (remolquestraspaso.getTIPOID().equals("comercios")) {
                                comercios1.setIDCOMERCIO(remolquestraspaso.getID());
                                comercios1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                                CargarComercios();
                                return;
                            }
                        }
                    }
                }
            }
            remolques1.setIDREMOLQUE(Long.parseLong(recibos1.getId()));
            remolques1.setIDMUNICIPIO(MySesion.getIdmunicipio());
            Remolques remolques = remolquesController1.findByPrimaryKey(remolques1);
            if (remolques == null) {
                jTextArea.append("\nNo existe un remolque con el codigo " + remolques1.getID());
                //Mensajeria.Mensaje("No existe un remolque con el codigo " + remolques1.getId());
                return;
            }
            remolques1 = remolques;

            //Encontrar el dueño
            if (remolques1.getTIPOID().equals("contribuyentes")) {
                contribuyentes1.setCEDULA(remolques1.getID());
                contribuyentes1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                CargarContribuyentes();
            } else {
                if (remolques1.getTIPOID().equals("comercios")) {
                    comercios1.setIDCOMERCIO(remolques1.getID());
                    comercios1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                    CargarComercios();
                }
            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "CargarRemolques()");
        }
    }

    private void CargarVehiculos() {
        try {
            if (recibos1.getTiporecibo().equals("vehiculostraspaso")) {
                String sql = "idvehiculo='" + recibos1.getId() + "' and idrecibo='" + recibos1.getIdrecibo() + "'";
                if (vehiclestraspasoController1.query(sql)) {
                    Vehiclestraspaso vehiclestraspaso = vehiclestraspasoController1.getVehiclestraspasolist().get(0);
                    if (vehiclestraspaso != null) {
//                        vehiculos1.setIDVEHICULO(Long.parseLong(vehiclestraspaso.getID()));
                        if (vehiclestraspaso.getTIPOID().equals("contribuyentes")) {
                            contribuyentes1.setCEDULA(vehiclestraspaso.getID());
                            contribuyentes1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                            CargarContribuyentes();
                            return;
                        } else {
                            if (vehiclestraspaso.getTIPOID().equals("comercios")) {
                                comercios1.setIDCOMERCIO(vehiclestraspaso.getID());
                                comercios1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                                CargarComercios();
                                return;
                            }
                        }
                    }
                }
            }

            vehiculos1.setIDVEHICULO(Long.parseLong(recibos1.getId()));
            vehiculos1.setIDMUNICIPIO(MySesion.getIdmunicipio());
            Vehicles vehiculos = vehiculosController1.findByPrimaryKey(vehiculos1);

            if (vehiculos == null) {
                jTextArea.append("\nNo existe un vehiculos con el codigo " + vehiculos1.getID());
                // Mensajeria.Mensaje("No existe un vehiculos con el codigo " + vehiculos1.getId());
                return;
            }
            vehiculos1 = vehiculos;

            //Encontrar el dueño
            if (vehiculos1.getTIPOID().equals("contribuyentes")) {
                contribuyentes1.setCEDULA(vehiculos1.getID());
                contribuyentes1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                CargarContribuyentes();
            } else {
                if (vehiculos1.getTIPOID().equals("comercios")) {
                    comercios1.setIDCOMERCIO(vehiculos1.getID());
                    comercios1.setIDMUNICIPIO(MySesion.getIdmunicipio());
                    CargarComercios();
                }
            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "CargarVehiculos()");
        }
    }

    private void Imprimir(List<MyInformeDiario> aux, HashMap map) throws JRException {
        try {
            map.put("P_IDMUNICIPIO", MySesion.getIdmunicipio());
            map.put("P_MUNICIPIO", MySesion.getMunicipio());
            map.put("P_NOMBREUSUARIO", MySesion.getNombreusuario());
            map.put("P_USERNAME", MySesion.getUsername());
            map.put("P_CANTIDADRECIBOS", totalRecibos);
            java.util.Date FechaDate = jXDatePickerFechaInicio.getDate();
            java.sql.Date FechaInicio = new java.sql.Date(FechaDate.getTime());
            if (FechaInicio == null) {
                Mensajeria.Mensaje("Ingrese la fecha de inicio");
                jXDatePickerFechaInicio.requestFocus();
                return;
            }
            FechaDate = jXDatePickerFechaTerminacion.getDate();
            java.sql.Date FechaTerminacion = new java.sql.Date(FechaDate.getTime());
            if (FechaTerminacion == null) {
                Mensajeria.Mensaje("Ingrese la fecha de terminacion");
                jXDatePickerFechaTerminacion.requestFocus();
                return;
            }
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            String inicio = formatter.format(FechaInicio);
            String terminacion = formatter.format(FechaTerminacion);
            String condicion = "Desde: (" + inicio + ") Hasta: (" + terminacion + ")";
            map.put("P_CONDICION", condicion);

            map.put("P_TOTALPAGADO", this.granTotal);
            JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(aux);
            //   InputStream reporte = (InputStream) getClass().getResourceAsStream("Actividad.jasper");
            InputStream reporte = (InputStream) getClass().getResourceAsStream("/org/gingresos/reportes/contabilidad/ContabilidadInformeDiario.jasper");
            if (reporte == null) {
                Mensajeria.Mensaje("No se pudo cargar el reporte");
            } else {

                JasperPrint print = JasperFillManager.fillReport(reporte, map, ds);
                JasperViewer.viewReport(print, false);

            }

        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "Imprimir()");
        }
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButtonAyuda;
    private javax.swing.JButton jButtonCargarRegistros;
    private javax.swing.JButton jButtonImprimir;
    private javax.swing.JCheckBox jCheckBoxFiltro;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTable jTable;
    private javax.swing.JTextArea jTextArea;
    private javax.swing.JTextField jTextFieldTotalAnulados;
    private javax.swing.JTextField jTextFieldTotalRecargo;
    private javax.swing.JTextField jTextFieldTotalRecaudado;
    private javax.swing.JTextField jTextFieldTotalRecibos;
    private javax.swing.JTextField jTextFieldTotalSinRecargo;
    private javax.swing.JToolBar jToolBar1;
    private org.jdesktop.swingx.JXDatePicker jXDatePickerFechaInicio;
    private org.jdesktop.swingx.JXDatePicker jXDatePickerFechaTerminacion;
    private org.jdesktop.swingx.JXStatusBar jXStatusBar1;
    // End of variables declaration//GEN-END:variables
}
